# 1.登录系统这个函数的功能在while循环里面
def logIn(name,pwd):
    '''
    :param name: 帐户
    :param pwd: 账户密码
    :return: 输入错误
    '''
    if acc_list[0]['pwd'] == '0123456789' and acc_list[0]['name'] == 'Joy':
        print('登陆成功')
    elif acc_list[0]['pwd'] != '0123456789' and acc_list[0]['name'] != 'Joy':
        print('密码错误，请重新登陆')


# 2.退出系统
def logOut():
    pass

# 帐户数据源
acc_list = [
    {'name':'Joy','AccountNo':'a00001','balance':100000,'pwd':'01234'},
    {'name':'Joys','AccountNo':'a00001','balance':100000,'pwd':'012'},
    {'name':'Joye','AccountNo':'a00001','balance':100000,'pwd':'012345'}

]


# 3.查看帐户余额
def show_accs_info():
    '''

    :return:
    '''
    if len(acc_list)==0:
        print('='*20,'没有帐户','='*20)
    owner_dict=acc_list[i]
    print('|{0:<5}|{1:<10}|{2:<15}|{3:<15}|'.format('sid','name', 'AccountNo', 'balance'))
    print('-' * 50)
    #for i, owner_dict in enumerate(acc_list):
    print('|{0:<5}|{1:<10}|{2:<15}|{3:<15}|'.format(i + 1, owner_dict['name'], owner_dict['AccountNo'], owner_dict['balance']))
# 4.添加帐户余额
num = 0
def add_money(num):
    num = input('请输入存入的金额：')
    acc_list[i]['balance'] += int(num)

# add_money(1000)
# show_accs_info()
# 5.取款
amt = 0
def withdraw_money(amt):
    amt = input('请输入取出的金额：')
    acc_list[i]['balance'] -= int(amt)

#withdraw_money(1000)
#show_accs_info()

#6.界面和交互
while True:
    name = input('请输入一个名字：')
    pwd = input('请输入帐户密码：')
    # 输出一个登陆成功后的初始界面
    #制作一个计数变量,计算每次循环的列表的元素的下标是从0个开始
    i=0
    # 遍历一个存储信息的列表,遍历出来的元素是字典,把字典赋值给acc_l
    for  acc_l in  acc_list:
        #循环判断acc_l每一个字典的键对应的值是不是能跟输入的name   pwd 相同,如果不同,执行else  i加1
        if acc_l['pwd'] == pwd and acc_l['name'] == name:
            #如果判断成功,进入下面的代码运行
            print('登陆成功' )
            print('=' * 12, '登陆成功！帐户系统', '=' * 12)
            print('{:1} {:15}'.format(' ', '1. 查看帐户信息'))
            print('{:1} {:15}'.format(' ', '2. 存款'))
            print('{:1} {:15}'.format(' ', '3. 取款'))
            print('{:1} {:15}'.format(' ', '4. 退出'))
            print('=' * 40)
            #并且跳出for 循环,这里的break 是跳出for 循环,并没有跳出58行的while 循环,开始执行87行代码
            break
        else:
            #计算每次循环的列表的元素的下标是多少
            i += 1
    else:
        #for 循环结正常循环束后才会执行这里的else,这里的else是 for 的else,不是if的 ,如果中间的if 执行了break跳出出循环,else不再执行
        print('密码错误，请重新登陆')
        continue

# 根据不同输入值，产生不同服务
    while True:
        key = input('请输入对应的选择:')
        if key == '1':
            print('='*12,'帐户信息浏览','='*12)
            show_accs_info()
            print('{:1} {:15}'.format(' ', '1. 查看帐户信息'))
            print('{:1} {:15}'.format(' ', '2. 存款'))
            print('{:1} {:15}'.format(' ', '3. 取款'))
            print('{:1} {:15}'.format(' ', '4. 退出'))
            print('=' * 40)
            input('按回车继续')

            #continue的意思是continue以下的代码不在再执行,回到88行的循环,从新开始
            continue
        if key == '2':
            print('=' * 12, '存款', '=' * 12)
            add_money(num)
            show_accs_info()
            input('按回车继续')
            print('{:1} {:15}'.format(' ', '1. 查看帐户信息'))
            print('{:1} {:15}'.format(' ', '2. 存款'))
            print('{:1} {:15}'.format(' ', '3. 取款'))
            print('{:1} {:15}'.format(' ', '4. 退出'))
            print('=' * 40)
            #key = input('请输入对应的选择:')
            # continue的意思是continue以下的代码不在再执行,回到88行的循环,从新开始,等待输入key
            continue
        if key == '3':
            print('=' * 12, '取款', '=' * 12)
            withdraw_money(amt)
            show_accs_info()
            input('按回车继续')
            print('=' * 12, '登陆成功！帐户系统', '=' * 12)
            print('{:1} {:15}'.format(' ', '1. 查看帐户信息'))
            print('{:1} {:15}'.format(' ', '2. 存款'))
            print('{:1} {:15}'.format(' ', '3. 取款'))
            print('{:1} {:15}'.format(' ', '4. 退出'))
            print('=' * 40)
            #key = input('请输入对应的选择:')
            continue
        elif key == '4':
            logOut()
            print('=' * 12, '再见! 退出帐户', '=' * 12)
        break
    break